<?php
/**
 *      [Elitechmedia!] (C)2001-2099 MYSELF Inc.
 *      This is NOT a freeware, use is subject to license terms
 *      $Id: adddh.php 22609 2013-10-16 01:55:33Z zhangchaofeng
 */
/*
 * 复制xCopy函数用法：    
 *xCopy("feiy","feiy2",1):拷贝feiy下的文件到   feiy2,包括子目录    
 *xCopy("feiy","feiy2",0):拷贝feiy下的文件到   feiy2,不包括子目录    
 *参数说明：    
 *$source:源目录名    
 *$destination:目的目录名    
 *$child:复制时，是不是包含的子目录
 */
function xCopy($source, $destination, $child)
{
	if(!file_exists($destination))
	{
		if (!mkdir(rtrim($destination, '/'), 0777))
		{
        	return false;
        }
        @chmod($destination, 0777);
	}
	if(!is_dir($source))
	{  
		return 0;
	}
	if(!is_dir($destination))
	{
		mkdir($destination,0777);   
	}
	$handle=dir($source);
	while($entry=$handle->read())
	{
		if(($entry!=".")&&($entry!=".."))
		{
			if(is_dir($source."/".$entry))
			{
				if($child)	xCopy($source."/".$entry,$destination."/".$entry,$child);
			}
			else
			{
				copy($source."/".$entry,$destination."/".$entry);
			}
		}    
	}    
	return 1;
}


/*删除deldidr函数用法：    
 *  deldidr("feiy"):删除feiy，包括子目录      
 *参数说明：    
 *   $dir:要删除的目录名   
 */
function deldir($dir)
{
	if (!file_exists($dir))
	{
		return true;
	}
	else
	{
		@chmod($dir, 0777);
	}
	$dh=opendir($dir);
	while ($file=readdir($dh))
	{
		if($file!="." && $file!="..")
		{
  			$fullpath=$dir."/".$file;
	      	if(!is_dir($fullpath))
	      	{
	          	unlink($fullpath);
	      	}
	      	else
	      	{
	          	deldir($fullpath);
	      	}
		}
	}
  	closedir($dh);
	if(rmdir($dir))
	{
		return true;
	}
	else
	{
		return false;
	}
}
/**
 * 生成缩略图
 * GetImageSize:
 *  	{
 * 			本函数可用来取得 GIF、JPEG 及 PNG 三种 WWW 上图片的高与宽，不需要安装 GD library 就可以使用本函数。
 * 			返回的数组有四个元素。
 * 				返回数组的第一个元素 (索引值 0) 是图片的高度，单位是像素 (pixel)。
 * 				第二个元素 (索引值 1) 是图片的宽度。
 * 				第三个元素 (索引值 2) 是图片的文件格式，其值 1 为 GIF 格式、 2 为 JPEG/JPG 格式、3 为 PNG 格式。
 * 				第四个元素 (索引值 3) 为图片的高与宽字符串，height=xxx width=yyy。
 *			可省略的参数 imageinfo 用来取得一些图片的相关信息，例如 IPTC (http://www.xe.net/iptc) 的 APP13 标记，就可以加在图片中，可利用 iptcparse() 来解析。
 *		}
 *	imagecreatefromgif:  [ImageCreateFromJpeg,ImageCreateFromPNG]
 *		{
 			本函数用来取出一张 GIF 格式图形，通当取出当背景或者基本的画布样本使用。
 			参数 filename 可以是本地端的文件，也可以是网络的 URL 位址。
 			返回值为 GIF 的文件代码，可供其它的函数使用。
 			本函数产生的 GIF 图，由于有版权的问题，因此在商业上的使用还要多加考量。	
 		}
 */
function ImageResize($srcFile,$toW,$toH,$toFile="")
{
	if($toFile=="")
	{ 
		$toFile = $srcFile; 
	}
	//不设置目标路径,就在当前目录创建
   	$info = "";
   	$data = GetImageSize($srcFile,$info);
   	switch ($data[2])
   	{
    	case 1:
      		if(!function_exists("imagecreatefromgif"))
      		{
       			echo "你的GD库不能使用GIF格式的图片，请使用Jpeg或PNG格式！<a href='javascript:go(-1);'>返回</a>";
       			exit();
      		}
      		$im = ImageCreateFromGIF($srcFile);
      		break;
    	case 2:
      		if(!function_exists("imagecreatefromjpeg"))
      		{
       			echo "你的GD库不能使用jpeg格式的图片，请使用其它格式的图片！<a href='javascript:go(-1);'>返回</a>";
       			exit();
      		}
      		$im = ImageCreateFromJpeg($srcFile);   
      		break;
   		case 3:
      		$im = ImageCreateFromPNG($srcFile);   
      		break;
  	}
  	$srcW=ImageSX($im);//本函数用来取得图片的宽度数值。
  	$srcH=ImageSY($im);
  	$toWH=$toW/$toH;
  	$srcWH=$srcW/$srcH;
  	if($toWH<=$srcWH)
  	{
       $ftoW=$toW;
       $ftoH=$ftoW*($srcH/$srcW);
  	}
  	else
  	{
      $ftoH=$toH;
      $ftoW=$ftoH*($srcW/$srcH);
  	}   
  	if($srcW>$toW||$srcH>$toH)
  	{
		if(function_exists("imagecreatetruecolor"))
		{
        	@$ni = ImageCreateTrueColor($ftoW,$ftoH);
       		if($ni)
       		{
       			ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
       		}
       		else
       		{
         		$ni=ImageCreate($ftoW,$ftoH);
          		ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
        	}
     	}
     	else
     	{
        	$ni=ImageCreate($ftoW,$ftoH);
        	ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
     	}
    	if(function_exists('imagejpeg'))
    	{
    		ImageJpeg($ni,$toFile);
    	}
    	else
    	{
    		ImagePNG($ni,$toFile);
    	}
     	ImageDestroy($ni);
  }
  ImageDestroy($im);
}

/**
 * 上传图片
 */
function uploadPic($file, $dir, $name,$type=NULL)
{
	//Set size
	//$max_size = 512000; //500 KB 
	$info=NULL;		
	//Set Path
	if ($dir) {
		if (substr ( $dir, - 1 ) != "/")
		{
			$dir = $dir . "/";
		}
	}
	if($type=="dat")
	{
		$imagetype=array('application/octet-stream','text/plain');
		if(array_pop(explode('.',$_FILES["$file"]['name']))!="dat")
		{
			return "Illegal dat file type! ";
		}		
	}
	elseif($type=='jpg')
	{
		$imagetype=array('image/jpeg','image/pjpeg');
	}
	elseif($type=='mp4')
	{
		$imagetype=array('video/mp4');
	}
	else
	{
		$imagetype=array('image/gif','image/jpeg','image/pjpeg','image/x-png','image/png','image/bmp');
	}
	//Set name
	if ($name == "")
		$name = $_FILES ["$file"] ['name'];
	/*$len = strrpos ( $name, "." );
	if (! $len)
		$len = strlen ( $name );
	$name = substr ( $name, 0, $len );
	
	//Add extension
	if ($_FILES ["$file"] ['type'] == "image/gif")
		$name = $name . ".gif";
	if ($_FILES ["$file"] ['type'] == "image/jpeg" || $_FILES ["$file"] ['type'] == "image/pjpeg")
		$name = $name . ".jpg";
	if ($_FILES ["$file"] ['type'] == "image/x-png"|| $_FILES ["$file"] ['type'] == "image/png")
		$name = $name . ".png";
	if ($_FILES ["$file"] ['type'] == "image/bmp")
		$name = $name . ".bmp";
	if ($_FILES ["$file"] ['type'] == "image/bmp")
		$name = $name . ".bmp";*/
		
	//check error
	if ($_FILES ["$file"] ['error'])
	{
		if ($_FILES ["$file"] ['error'] == 1)
			$info = "The image is too large (server).";
		if	($_FILES ["$file"] ['error'] == 2)
			$info = "The image is too large (form).";
		if ($_FILES ["$file"] ['error'] == 3)
			$info = "An error occurred during upload! image File only partially uploaded.";
		if ($_FILES ["$file"] ['error'] == 4)
			$info = "No image file was uploaded.";
		if ($_FILES ["$file"] ['error'] == 5)
			$info = "Upload image pictute file size to zero.";
	}
	else
	{
		if(in_array($_FILES ["$file"] ['type'],$imagetype))
		{
			/*if ($_FILES ["$file"] ['size'] <= $max_size) { *//*					
				$size=GetImageSize($_FILES["$file"][tmp_name]);				
				if(($size[0]<=$max_w)&&($size[0]>=$min_w)&&($size[1]<=$max_h)&&($size[1]>=$min_h)){ */
				copy ( $_FILES ["$file"] ['tmp_name'], $dir . $name );
				if (! file_exists ( $dir . $name ))
				{
					$info = "An error occurred during copying image files! Upload Failed!";
				}
				/*}
				else{ 		
					$info="Picture size does not fit,Width : ".$min_w."-".$max_w."px，Height : ".$min_h."-".$max_h."px.";
				}*/
			/*} else {
				$info = "The image file exceeds the limit, a maximum of" . ($max_size / 1024) . " KB";
			}*/
		}
		else
		{
			$info = "Illegal ".$type?$type:'image'."file type! ";
		}
	}
	return $info;
}

function mkdirs($dir,$mode=0777)
{
	if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;
	if (!mkdirs(dirname($dir), $mode)) return FALSE;
	return @mkdir($dir, $mode);
}